package com.tedu.api.io;

import com.sun.jmx.snmp.SnmpUnknownAccContrModelException;
import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.logging.Filter;

/**
 * listFiles(接口：Filter)     重载
 * 作用：按照“指定规则”获取对应文件/文件夹
 * Filter接口---专门给listFiles方法提供：过滤文件夹或者文件【指定规则】
 * accept()从每个File文件中判断，拿到【具体逻辑】的文件夹
 *
 * 需求：获取  API 项目下 所有子项【文件和文件夹】，获取src文件
 *     指定规则：验证是s开头就是src
 *
 * 作业2：FileFilter接口按照 匿名内部类方式实现， 功能如上需求
 *   接口：FileFilter ff=new FileFilter() {   accept()      }
 */
public class FilterAPI {
    //主方法：./ 路径指定根级
    public static void main(String[] args) throws IOException {
        //1.创建File的文件类：   获取当前 API文件夹   路径：./API
//        File file = new File("." + File.separator + "API");
//        System.out.println(file.getCanonicalPath());

//    4.创建FileFilter接口对象---无法直接创建：实现类---实现--接口【创建】
//       MyFilter my=new MyFilter();
         /*FileFilter my=new FileFilter() {
             public boolean accept(File pathname) {
                     String name=pathname.getName();
                     System.out.println("过滤出来文件夹名字是："+name);
                     return name.startsWith("A");
             }
         };*/
   //     FileFilter my=(pathname)->{return pathname.getName().startsWith("A");};

        //2.获取文件夹下所有“子项：文件夹下包括所有文件和文件夹”
   //     File[] subs=new File(new File("." + File.separator + "API").listFiles((pathname)->{return pathname.getName().startsWith("A");});

//    //3.打印子项下所有名字//

        /*for (int i = 0; i < subs.length; i++) {//i  下标  从0开始
            System.out.println("所有的文件和文件夹名：" + subs[i].getName());
        }*/
        //增强for for(接受类型 f：){}
        for (File f:new File("." + File.separator + "API").listFiles((pathname)->{return pathname.getName().startsWith("A");})){
            System.out.println("遍历后过滤完成："+f);
        }

        //作业2
        FileFilter ff = new FileFilter() {
            public boolean accept(File pathname) {
                String name = pathname.getName();
                System.out.println("过滤出来文件夹名字是：" + name);
                return name.startsWith("s");
            }
        };
//        file.listFiles();

    }}
//    }

        //单元测试：./ 路径指定父级
//    @Test
//    public void test01() throws IOException {
//    创建File的文件类：   获取当前 API文件夹   路径：./
//    File file=new File("."+File.separator);
//   System.out.println(file.getCanonicalPath());
//    //4.创建FileFilter接口对象---无法直接创建：实现类---实现--接口【创建】





//创建实现类---实现---FileFilter接口---对象创建
//class MyFilter implements FileFilter {
//    accept(File pathname)
//    传入参数：File pathname---获取所有需要过滤文件
//    作用：添加过滤条件，将所有需要过滤文件，
//               逐一过滤，【条件：规则---开发者指定】条件满足返回true，输出，条件不满足反之
//    public boolean accept(File pathname) {
//        添加规则：文件或者文件是s  开头---过滤
//        ①获取所有的文件夹名字
//        String name=pathname.getName();
//        ②过滤以  s  开头的文件夹
//         字符串：starWith(“s”)   返回值boolean
//        作用：验证字符串首字符是不是匹配字符，如果匹配：true，反之不匹配
//        ③打印过滤出现字符串
//        System.out.println("过滤出来文件夹名字是："+name);
//        return name.startsWith("A");
//    }
//}